/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {itemA检验项} from "./AppendixPage";
import {render容类别} from "../../common/render";
import {itemA下结论} from "./Conclusion";

export const config设备概况 = [
    [['氧舱品种','_$设备品种',render容类别], ['产品名称','_$设备名称'], ],
    [['设备代码','_$设备代码'], ['主体结构型式','_$主体结构'], ],
    [['使用登记证编号', '_$使用证号'], ['单位内编号','_$单位内部编号'], ],
    [['使用单位', '_$使用单位'], ],
    [['设备使用地点', '_$设备使用地点'] ],
    [['使用单位安全管理人员', '安全员'], ['使用单位联系电话', '_$使用单位电话'], ],
    [['下次定期检验日期', '_$新下检日'], ['上次年度检查日期', {n:'上年度日',t:'d'},],  ],
    [['投用日期', '_$投用日期'], ['额定进舱人数','_$氧舱人数', '人'] ],
];

export const tail附页= <Text css={{"@media print": {fontSize: '0.75rem'}}}>
    注：未进行的检查项目，在检查结果栏打“—”。无问题或者“符合”的检查项目，在检查结果栏打“√”；有问题或者“不符合“
    的检查项目，在检查结果栏中打“×”，并且在备注、说明栏中加以说明。需要进行试验、校验、检测的应当附其单项报告。
</Text>;

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const result = assertNamesUnique([{value: rep?.tzFields},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA下结论, ...itemA检验项, ]},
            {value:['Projects',  ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                    JSON.parse(e.currentTarget.value??'[]');
                    setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});

//testlogcfg.ses::  "contlist":全部可能页； "mainpage"扣除"addpage"后的才是必须页面。  页面装配顺序看"contlist":[]？
export const Projects默认 = [
    {name: '氧舱委托年度检查报告', do: true, ha: 'Conclusion'},
    {name: '氧舱委托年度检查报告附页', do: true, na:true, ha: 'AppendixPage'},
];
